package com.xinhe.cn.cpbox.utils;

import java.io.*;
import java.net.URL;
import java.net.URLConnection;

/**
 * @author HB
 * @date 2021/04/07 09:58
 */
public class FileUtil {
    /**
     * 根据byte数组，生成文件
     *
     * @param bytes    文件数组
     * @param fileName 文件名称
     */
    public static File byteToFile(byte[] bytes, String fileName) throws Exception {
        BufferedOutputStream bos = null;
        FileOutputStream fos = null;
        File file = null;
        file = new File(fileName);
        fos = new FileOutputStream(file);
        bos = new BufferedOutputStream(fos);
        bos.write(bytes);
        if (bos != null) {
            bos.close();
        }
        if (fos != null) {
            fos.close();
        }
        return file;
    }

    /**
     * 通过url下载微信头像
     *
     * @param imageUrl 微信头像url
     * @param savepath 保存路径
     * @param name     文件名
     * @return 保存的文件的全路径
     */
    public static String getImageByUrl(String imageUrl, String savepath, String name) {
        try {
            // 构造URL
            URL url = new URL(imageUrl);
            // 打开连接
            URLConnection con = url.openConnection();

            // 输入流
            InputStream is = con.getInputStream();

            // 10K的数据缓冲
            byte[] bs = new byte[1024 * 10];

            // 读取到的数据长度
            int len;

            File file = new File(savepath);
            if (!file.exists()) {
                file.mkdirs();
            }

            // 输出的文件流
            String path = savepath + name;
            OutputStream os = new FileOutputStream(path);

            // 开始读取
            while ((len = is.read(bs)) != -1) {
                os.write(bs, 0, len);
            }

            // 完毕，关闭所有链接
            os.close();
            is.close();

            return path;
        } catch (Exception e) {
            return "error";
        }

    }
}
